package com.mt.repair.dao.repairManagement;

import com.mt.common.core.web.base.PageDTO;
import com.mt.common.core.web.base.PageResultDTO;
import com.mt.repair.entity.repairManagement.Message;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
@Component(value = "messageDao")
public interface MessageDao {

    /**
    * 根据分页参数查询消息中心集合
    *
     * <!--                <if test="filters.toUserId!=null">-->
     * <!--                    <if test="filterTypes.toUserId=='单值'">-->
     *
     * <!--                        t0.to_user_id=#{filters.toUserId} and t0.from_user_id=#{filters.fromUserId}-->
     * <!--                        or-->
     * <!--                        t0.to_user_id=#{filters.fromUserId} and t0.from_user_id=#{filters.toUserId}-->
     * <!--                    </if>-->
     * <!--                </if>-->
     * <!--            </if>-->
    * @param pageDTO 分页条件
    */
    public List<Message> findMessages(PageDTO pageDTO);

    /**
    * 查询全部消息中心集合
    *
    */
    public List<Message> findAllMessages();

    /**
    * 查询所有消息中心集合(只提取ID 和 Name)
    *
    */
    public List<Message> findAllMessagesWithIdName();

    /**
    * 根据名称查询消息中心集合(只提取ID 和 Name)
    *
    * @param messageName 名称
    */
    public List<Message> findMessagesWithIdNameByName(@Param("messageName") String messageName);

    /**
    * 根据ID查询指定的消息中心(只提取ID 和 Name)
    *
    * @param messageId Id
    */
    public Message findMessagesWithIdNameById(@Param(" messageId") Long messageId);

    /**
    * 根据分页参数查询消息中心集合的数量
    *
    * @param pageDTO 分页条件
    */
    public Long findMessageTotalCount(PageDTO pageDTO);

    /**
    * 根据ID查询指定的消息中心
    *
    * @param messageId Id
    */
    public Message findMessage(@Param("messageId") Long messageId);

    /**
    * 根据ID查询指定的消息中心(包含外键)
    *
    * @param messageId Id
    */
    public Message findMessageWithForeignName(@Param("messageId") Long messageId);

    /**
    * 新增消息中心
    *
    * @param message 实体对象
    */
    public Long saveMessage(Message message);

    /**
    * 更新消息中心
    *
    * @param message 实体对象
    */
    public Long updateMessage(Message message);

    /**
    * 根据ID删除消息中心
    *
    * @param messageId ID
    */
    public Long deleteMessage(@Param("messageId") Long messageId);

    Long countNotReadNum(@Param("toUserId") Long toUserId);

    Long readMessage(@Param("messageId") Long messageId);
}
